{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import random\n",
    "import pickle\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Utility functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def readData(images_file, labels_file):\n",
    "    x = np.loadtxt(images_file, delimiter=',')\n",
    "    y = np.loadtxt(labels_file, delimiter=',')\n",
    "    return x, y\n",
    "\n",
    "def nn_test(data, labels, params):\n",
    "    h, output, cost = forward_prop(data, labels, params)\n",
    "    accuracy = compute_accuracy(output, labels)\n",
    "    return accuracy\n",
    "\n",
    "\n",
    "def compute_accuracy(output, labels):\n",
    "    accuracy = (np.argmax(output,axis=1) == np.argmax(labels,axis=1)).sum() * 1. / labels.shape[0]\n",
    "    return accuracy\n",
    "\n",
    "\n",
    "def one_hot_labels(labels):\n",
    "    one_hot_labels = np.zeros((labels.size, 10))\n",
    "    one_hot_labels[np.arange(labels.size),labels.astype(int)] = 1\n",
    "    return one_hot_labels\n",
    "\n",
    "\n",
    "def prepare_data(random_seed=100):\n",
    "    np.random.seed(random_seed) # for reproducibility\n",
    "    trainData, trainLabels = readData('images_train.csv', 'labels_train.csv')\n",
    "    trainLabels = one_hot_labels(trainLabels)\n",
    "    p = np.random.permutation(60000)\n",
    "    trainData = trainData[p,:]\n",
    "    trainLabels = trainLabels[p,:]\n",
    "\n",
    "    devData = trainData[0:10000,:]\n",
    "    devLabels = trainLabels[0:10000,:]\n",
    "    trainData = trainData[10000:,:]\n",
    "    trainLabels = trainLabels[10000:,:]\n",
    "\n",
    "    mean = np.mean(trainData)\n",
    "    std = np.std(trainData)\n",
    "    trainData = (trainData - mean) / std\n",
    "    devData = (devData - mean) / std\n",
    "\n",
    "    testData, testLabels = readData('images_test.csv', 'labels_test.csv')\n",
    "    testLabels = one_hot_labels(testLabels)\n",
    "    testData = (testData - mean) / std\n",
    "\n",
    "    return trainData, trainLabels, devData, devLabels, testData, testLabels"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Implement components of NN"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\\begin{align*}\n",
    "\\mathrm{softmax}(x)_i = \\frac{e^{x_i}}{\\sum_j e^{x_j}} = \\frac{e^{x_i + c}}{\\sum_j e^{x_j + c}} \n",
    "\\end{align*}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Since adding a constant won't change softmax results, so we remove the maximum of $x$ for numerical stability. Reference of previous work from cs231n: https://github.com/zyxue/stanford-cs231n/blob/master/assignment1/cs231n/classifiers/softmax.py#L65"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def softmax(x):\n",
    "    \"\"\"\n",
    "    Compute softmax function for input. \n",
    "    Use tricks from previous assignment to avoid overflow\n",
    "    \n",
    "    x is of shape: B x K\n",
    "    B: batch size\n",
    "    K: number of classes\n",
    "    \"\"\"\n",
    "    ### YOUR CODE HERE\n",
    "    c = np.max(x, axis=1, keepdims=True)\n",
    "    numerator = np.exp(x - c)\n",
    "    denominator = np.sum(numerator, axis=1, keepdims=True)\n",
    "    s = numerator / denominator\n",
    "    ### END YOUR CODE\n",
    "    return s"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\\begin{align*}\n",
    "\\mathrm{sigmoid}(x)_i &= \\frac{1}{1 + e^{-x}} = \\frac{e^{x}}{e^{x} + 1}\n",
    "\\end{align*}\n",
    "\n",
    "For numerical stability, use the 1st equation for positive x, and the 2nd equation for negative x. Reference: https://github.com/zyxue/stanford-cs231n/blob/5727c79970285e19c005b19237ade7412f676a40/assignment3/cs231n/rnn_layers.py#L264"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def sigmoid(x):\n",
    "    \"\"\"\n",
    "    Compute the sigmoid function for the input here.\n",
    "    \n",
    "    x is of shape: B x H\n",
    "    \"\"\"\n",
    "    ### YOUR CODE HERE\n",
    "    pos_mask = (x >= 0)\n",
    "    neg_mask = (x < 0)\n",
    "\n",
    "    # specify dtype! otherwise, it may all becomes zero, this could have different\n",
    "    # behaviors depending on numpy version\n",
    "    z = np.zeros_like(x, dtype=float)\n",
    "    z[pos_mask] = np.exp(-x[pos_mask])\n",
    "    z[neg_mask] = np.exp(x[neg_mask])\n",
    "\n",
    "    top = np.ones_like(x, dtype=float)\n",
    "    top[neg_mask] = z[neg_mask]\n",
    "    s = top / (1 + z)\n",
    "    ### END YOUR CODE\n",
    "    return s"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Forward propagation equations:\n",
    "\n",
    "\\begin{align*}\n",
    "h &= sigmoid(z_1) = s(z_1) = s(x W_1 + b_1) \\\\\n",
    "\\hat y &= softmax(z_2) = f(z_2) = f(hW_2 + b_2) \\\\\n",
    "J &= CE(y, \\hat y) = - \\sum_{k=1}^{K} y_k \\log{\\hat y_k}\n",
    "\\end{align*}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def forward_prop(data, labels, params):\n",
    "    \"\"\"\n",
    "    return hidder layer, output(softmax) layer and loss\n",
    "    \n",
    "    data is of shape: B x D\n",
    "    labels is of shape: B x K\n",
    "    \"\"\"\n",
    "    W1 = params['W1'] # D x H\n",
    "    b1 = params['b1'] # B x H\n",
    "    W2 = params['W2'] # H x K\n",
    "    b2 = params['b2'] # B x K\n",
    "\n",
    "    ### YOUR CODE HERE\n",
    "    z1 = data.dot(W1) + b1\n",
    "    h = sigmoid(z1)\n",
    "    z2 = h.dot(W2) + b2\n",
    "    y = softmax(z2)\n",
    "\n",
    "    loss = - np.multiply(labels, np.log(y + 1e-16)).sum()\n",
    "    loss /= data.shape[0]\n",
    "    ### END YOUR CODE\n",
    "    return h, y, loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Back propagation equations, I derived and implemented these before from another NN course: https://github.com/zyxue/stanford-cs224n/blob/master/assignment1/q2-Neural-network-basics.ipynb.\n",
    "\n",
    "\\begin{align*}\n",
    "\\delta_1 &= \\frac{\\partial J}{\\partial z_2} = \\hat y - y \\\\\n",
    "\\frac{\\partial J}{\\partial W_2}  &= \\delta_1 \\frac{\\partial z_2}{\\partial W_2} = h^T \\delta_1 \\\\\n",
    "\\frac{\\partial J}{\\partial b_2}  &=\\delta_1 \\frac{\\partial z_2}{\\partial b_2} = \\delta_1 \\\\\n",
    "\\frac{\\partial J}{\\partial h}  &= \\delta_1 \\frac{\\partial z_2}{\\partial h} = \\delta_1 W_2^T\\\\\n",
    "\\delta_2 &= \\frac{\\partial J}{\\partial z_1}  = \\frac{\\partial J}{\\partial h} \\sigma'(z_1) =   \\delta_1 W_2^T \\circ h(1 - h) \\\\\n",
    "\\frac{\\partial J}{\\partial W_1} &= \\delta_2 \\frac{\\partial z_1}{\\partial W_1} = x^T \\delta_2 \\\\\n",
    "\\frac{\\partial J}{\\partial b_1} &= \\delta_2 \\frac{\\partial z_1}{\\partial b_1} = \\delta_2 \\\\\n",
    "\\end{align*}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def backward_prop(data, labels, params):\n",
    "    \"\"\"\n",
    "    return gradient of parameters\n",
    "    \"\"\"\n",
    "    W1 = params['W1']\n",
    "    b1 = params['b1']\n",
    "    W2 = params['W2']\n",
    "    b2 = params['b2']\n",
    "\n",
    "    ### YOUR CODE HERE\n",
    "    # The gradient calculation has been checked with gradient_check, and should be correct\n",
    "    h, y, cost = forward_prop(data, labels, params)\n",
    "\n",
    "    delta_1 = (y - labels) \n",
    "    gradW2 = np.dot(h.T, delta_1)\n",
    "    gradb2 = np.sum(delta_1, axis=0, keepdims=True)\n",
    "    \n",
    "    # Note: in the above\n",
    "    # matrix multiple sums the grad over all samples in the batch\n",
    "    # but for b: it needs sum up mannually\n",
    "    \n",
    "    delta_2 = np.multiply(np.dot(delta_1, W2.T), h * (1 - h))\n",
    "    gradW1 = np.dot(data.T, delta_2)\n",
    "    gradb1 = np.sum(delta_2, axis=0, keepdims=True)\n",
    "    \n",
    "    lamb = params['lambda']\n",
    "    if lamb > 0:\n",
    "        gradW2 += lamb * W2\n",
    "        gradW1 += lamb * W1\n",
    "    ### END YOUR CODE\n",
    "\n",
    "    grad = {}\n",
    "    # important: normalize by batch size!\n",
    "    B = data.shape[0]\n",
    "    grad['W1'] = gradW1 / B\n",
    "    grad['W2'] = gradW2 / B\n",
    "    grad['b1'] = gradb1 / B\n",
    "    grad['b2'] = gradb2 / B\n",
    "\n",
    "    return grad"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def calc_accuracy(y, labels):\n",
    "    \"\"\"my own version of calculate accurancy. Acutally, there is a version of\n",
    "    `compute_accuracy` in the nn_starter.py code already\"\"\"\n",
    "    pred = np.zeros_like(y)\n",
    "    # this is wrong! keep here for \"good memory\"\n",
    "    # pred[:, np.argmax(y, axis=1)] = 1\n",
    "    # learned from https://stackoverflow.com/questions/20295046/numpy-change-max-in-each-row-to-1-all-other-numbers-to-0\n",
    "    pred[np.arange(y.shape[0]), np.argmax(y, axis=1)] = 1\n",
    "    \n",
    "    res = np.abs((pred - labels)).sum(axis=1)\n",
    "    acc = res[res == 0].shape[0] / res.shape[0]\n",
    "    return acc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def update_params(params, grad, learning_rate):\n",
    "    # It's minus the grad instead of plus!!!\n",
    "    params['W1'] -= learning_rate * grad['W1']\n",
    "    params['W2'] -= learning_rate * grad['W2']\n",
    "    params['b1'] -= learning_rate * grad['b1']\n",
    "    params['b2'] -= learning_rate * grad['b2']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def nn_train(trainData, trainLabels, devData, devLabels, \n",
    "             num_hidden=300, learning_rate=5, batch_size=1000, num_epochs=30,\n",
    "             reg_strength=0):\n",
    "    (m, n) = trainData.shape\n",
    "    params = {}\n",
    "\n",
    "    ### YOUR CODE HERE\n",
    "    # rename variables to more intuitive ones\n",
    "    N = m\n",
    "    D = n\n",
    "    K = trainLabels.shape[1]\n",
    "    H = num_hidden\n",
    "    B = batch_size\n",
    "    \n",
    "    params['W1'] = np.random.standard_normal((n, H))\n",
    "    params['b1'] = np.zeros((1, H), dtype=float)\n",
    "    params['W2'] = np.random.standard_normal((num_hidden, K))\n",
    "    params['b2'] = np.zeros((1, K), dtype=float)\n",
    "    params['lambda'] = reg_strength\n",
    "    \n",
    "    num_iter = int(N / B) # number of iterations per epoch\n",
    "    tr_loss, tr_metric, dev_loss, dev_metric = [], [], [], []\n",
    "\n",
    "    for i in range(num_epochs):\n",
    "        print(i, end=',')\n",
    "        for j in range(num_iter):\n",
    "            batch_data = trainData[j * B: (j + 1) * B]\n",
    "            batch_labels = trainLabels[j * B: (j + 1) * B]\n",
    "            grad = backward_prop(batch_data, batch_labels, params)\n",
    "            update_params(params, grad, learning_rate)\n",
    "       \n",
    "        _, _y, _cost = forward_prop(trainData, trainLabels, params)\n",
    "        tr_loss.append(_cost)\n",
    "        tr_metric.append(calc_accuracy(_y, trainLabels))\n",
    "        _, _y, _cost = forward_prop(devData, devLabels, params)\n",
    "        dev_loss.append(_cost)\n",
    "        dev_metric.append(calc_accuracy(_y, devLabels))\n",
    "    ### END YOUR CODE\n",
    "    return params, tr_loss, tr_metric, dev_loss, dev_metric"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 45.7 s, sys: 19.2 s, total: 1min 4s\n",
      "Wall time: 1min 10s\n"
     ]
    }
   ],
   "source": [
    "%time trainData, trainLabels, devData, devLabels, testData, testLabels = prepare_data(random_seed=1000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# (a) Train without regularization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,"
     ]
    }
   ],
   "source": [
    "num_epochs = 30\n",
    "params, tr_loss, tr_metric, dev_loss, dev_metric = nn_train(\n",
    "    trainData, trainLabels, devData, devLabels, num_epochs=num_epochs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# with open('params_no_regularization.pkl', 'wb') as opf:\n",
    "#     pickle.dump(params, opf)\n",
    "\n",
    "# with open('params_no_regularization.pkl', 'rb') as inf:\n",
    "#     params = pickle.load(inf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x7f4c03a8edd8>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtgAAAEOCAYAAACzXGCqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8leX5+PHPlZO9QxICSRgJssLeKCiipYI4AKviqNa2\nUupsbfuttQ6s9ftFa/tzlJZaa2tdqHVSqNaF2CoISJQt24QZIHuP6/fHcxJCyDiEnHMyrvfr9bye\neZ7nSjwcr9znuu9bVBVjjDHGGGNM2wjwdwDGGGOMMcZ0JpZgG2OMMcYY04YswTbGGGOMMaYNWYJt\njDHGGGNMG7IE2xhjjDHGmDZkCbYxxhhjjDFtyBJsY4wxxhhj2pAl2MYY04WJyNMiclhENjZxXkTk\ncRHZISJfisjoeuemi8g297k7fRe1Mca0b5ZgG2NM1/Y3YHoz52cA/d3LPOCPACLiAha5z2cAV4lI\nhlcjNcaYDiLQ3wGcroSEBO3bt6+/wzDGmFZZt27dEVVN9NfzVXWliPRt5pJLgb+rM+3vKhGJFZGe\nQF9gh6ruAhCRJe5rNzf3PPvMNsZ0ZJ5+Znf4BLtv376sXbvW32EYY0yriMhef8fQghQgq95+tvtY\nY8cntHQz+8w2xnRknn5mW4mIMcYYrxKReSKyVkTW5uTk+DscY4zxOkuwjTHGNGcf0Kvefqr7WFPH\nT6KqT6rqWFUdm5jot2oYY4zxGUuwjTHGNOct4Dr3aCITgXxVPQCsAfqLSJqIBANz3dcaY0yX1+Fr\nsI0x3ldZWUl2djZlZWX+DqXDCg0NJTU1laCgIH+HcgIReRE4F0gQkWzgPiAIQFUXA8uBC4EdQAlw\ng/tclYjcArwDuICnVXVTa2Kw91frtdf3lTFdnSXYxpgWZWdnExUVRd++fRERf4fT4agqR48eJTs7\nm7S0NH+HcwJVvaqF8wrc3MS55TgJ+Gmx91frtOf3lTFdnZWIGGNaVFZWRnx8vCU/rSQixMfHWwtt\nE+z91Tr2vjKm/bIE2xjjEUt+To/9/ppnv5/Wsd+bMe1T1ywR+fJlqCiGsTf4OxJjjDHGGNMGVJXS\nymqKyqsoLq+muLyK4vIqSipqj1VRXOEcT40LY87oVK/F0jUT7E1vwNHtlmAb00Hk5eXxwgsvcNNN\nN53yay+88EJeeOEFYmNjPbp+wYIFREZG8tOf/vSUn2U6Jl++v4wxzatNkvNLK52lpPL4dnOL+7qq\nGvXoOVMHJlqC3eaShsBX/4LKMggK9Xc0xpgW5OXl8Yc//KHRBKiqqorAwKY/ypYvP+0+eKaTs/eX\nMW2npkYpLKsit6SC3JIKCsuqKCqvoqisioKyyrrtovIqCt3bhWWV5JVWUuBOliurm06SRSA6NIiY\nsONLckwY0e7t6LBAokICiahdggOJCHHV7UcGBxIe4iLI5d0q6S6aYGeA1kDOVkge6e9ojDEtuPPO\nO9m5cycjR45k2rRpzJw5k3vuuYe4uDi2bt3KV199xaxZs8jKyqKsrIzbb7+defPmAcen5i4qKmLG\njBlMnjyZTz75hJSUFN58803CwsKafG5mZibz58+npKSEfv368fTTTxMXF8fjjz/O4sWLCQwMJCMj\ngyVLlvDRRx9x++23A05d7MqVK4mKivLJ78ecHl++v5YuXcqvf/1rKioqiI+P5/nnnycpKYmioiJu\nvfVW1q5di4hw3333cdlll/H2229z1113UV1dTUJCAu+//74/fkWmC1NVCsqqyCks43BhOTmF5Rwu\nKOdIUbk7ia4kt9hJpvNKnES5uoVW5PBgF1GhgUSGBBIZGkRUSCA96yXJDZfY8Nrk2bk2IKD99z3o\nmgl29yHO+vBmS7CNOUX3L93E5v0FbXrPjORo7rt4SJPnFy5cyMaNG8nMzARgxYoVfP7552zcuLFu\neLKnn36abt26UVpayrhx47jsssuIj48/4T7bt2/nxRdf5M9//jNXXHEFr776Ktdee22Tz73uuut4\n4oknmDJlCvfeey/3338/jz76KAsXLmT37t2EhISQl5cHwCOPPMKiRYuYNGkSRUVFhIbat2Ot0dnf\nX5MnT2bVqlWICE899RQPP/wwv/3tb3nggQeIiYlhw4YNAOTm5pKTk8ONN97IypUrSUtL49ixY235\nazFdlKpSWF5FXnEluSUVHCupIK+kglz3fm5JBTm1ibR7XV5Vc9J9gl0BxEUEERceTFx4MAN7RBEb\nHkxc+PFjcRFOYhwZEkRkbUIdEoirAyTIp6trJtjd0iEwFA61ak4EY0w7MH78+BPG/n388cd5/fXX\nAcjKymL79u0nJUBpaWmMHOn8UT1mzBj27NnT5P3z8/PJy8tjypQpAFx//fVcfvnlAAwfPpxrrrmG\nWbNmMWvWLAAmTZrEHXfcwTXXXMOcOXNITfVebZ/xPm+9v7Kzs7nyyis5cOAAFRUVdc947733WLJk\nSd11cXFxLF26lHPOOafumm7durXpz2g6tvKqag7ml7Evr5SD+WUUlLrLL9yd+4rKj5dmFFc42wWl\nVeSVVDRZpxwgEBMWRGJUCIlRIYzr243EqBC6u/ed7VASo0KIDg20UWya0TUTbFcgJA60BNuYVmiu\nJdCXIiIi6rZXrFjBe++9x6effkp4eDjnnntuo2MDh4SE1G27XC5KS0tb9exly5axcuVKli5dyoMP\nPsiGDRu48847mTlzJsuXL2fSpEm88847DBo0qFX378o6+/vr1ltv5Y477uCSSy5hxYoVLFiwwCvx\nm46tsrqGnMJyDhWU1SXR+/PKOJBfyv68UvbllXGkqLzR1wa5xF164dQfR4UG0i0imF7dwokODazX\nuuy0NseGB9PNvR0dGtQhyi86gq6ZYAMkDYUd7/k7CmOMB6KioigsLGzyfH5+PnFxcYSHh7N161ZW\nrVp12s+MiYkhLi6Ojz/+mLPPPptnn32WKVOmUFNTQ1ZWFlOnTmXy5MksWbKEoqIijh49yrBhwxg2\nbBhr1qxh69atlmB3EL58f+Xn55OSkgLAM888U3d82rRpLFq0iEcffRRwSkQmTpzITTfdxO7du+tK\nRKwVu+MrLq8iO7eU7NwSDhWUc7CgjMMFZRwqKONQQTmHC8s4WlyBNmhkDgtykRwbSnJsGIN7RtMz\nJozk2FBSYsPoERNKbHgwESEuQgJd/vnBzAm6boLdPQMyn4fiIxCR4O9ojDHNiI+PZ9KkSQwdOpQZ\nM2Ywc+bME85Pnz6dxYsXM3jwYAYOHMjEiRPb5LnPPPNMXSfH9PR0/vrXv1JdXc21115Lfn4+qspt\nt91GbGws99xzDx9++CEBAQEMGTKEGTNmtEkMxvt8+f5asGABl19+OXFxcZx33nns3r0bgLvvvpub\nb76ZoUOH4nK5uO+++5gzZw5PPvkkc+bMoaamhu7du/Puu++e1s9qvK+sspp9eaVk55aSdayErNwS\nso85CXVWbinHiitOuF4EEiJDSIoOoWdMKCN6xZIUHUJSdChJ0U5JRmpcGDFhQVaS0YGINvwTqYMZ\nO3asrl279tRfuPMDeHY2XPcWpE9p+8CM6US2bNnC4MGD/R1Gh9fY71FE1qnqWD+F5HONfWbb++v0\n2O/Pd2pqlCNF5SeUbDjbx/ePFJ2YQAe7AkiJCyM1LozUuHB6dQujV1w4qXFh9IwJIyEymEAvDxln\n2o6nn9ldtwU7aaizPrzZEmxjjDHGAFBRVUN2bgl7j5aw92gxe9zrvcecluiK6hNH1IgIdpEcG0Zy\nbBhDU2JIjgklJS6MXt3C6RUXTveoEKtr7oK6boId2R3CE+DQRn9HYowxxhg/OJBfyrq9uazbm8v2\nQ0XsPVbMvtxS6g+yERHsok98BAOTopiWkUSqO5muXWw0DdOYrptggzPhzKHN/o7CGGOMMV5WWV3D\nlgMFdQn153tz2Z/vjAYTGhTAwKQoRveOY/bIFPrER9A3IZze3SJIiAy2BNqcsi6eYA+FtX+FmmoI\nsF63xhhjTGegqmQdK2XT/nw27Mtn3d5cvsjOo6zSKe9IjglldJ845vWJY0yfbgzqGeX1qbNN1+LT\nBFtEpgOPAS7gKVVd2OD8z4Br6sU2GEhUVe9MX9U9A6pKIXcPxPfzyiOMMcYY4z1V1TXsyCli074C\nNu0vYNP+fDYfKKCwrAqAwABhSHI0V43vzZg+cYzuHUdybFgLdzXm9PgswRYRF7AImAZkA2tE5C1V\nravRUNXfAL9xX38x8GOvJdcASe4JDQ5tsgTbGGOM6QCyc0tYuyeXNXuOsWFfPlsPFlLhnso7NCiA\nQT2iuWREMkOSYxiSHM3AHlGEBtm31Ma3fNmCPR7Yoaq7AERkCXAp0FQR9FXAi16NKHEQIE6CnXGJ\nVx9ljGk7CxYsIDIykp/+9Kft4j6mc7H3RftRU6NsO1TI2j3HWLMnl7V7jtXVTUeGBDIsJYbrJvZh\naIqTTKclRNiQd6Zd8GWCnQJk1dvPBiY0dqGIhAPTgVuaOD8PmAfQu3fv1kcUHA7d0uGwTZlujOm6\nPCjfiwOeBvoBZcB3VXWj+9yPge8DCmwAblDVk+cRN8YD+aWVbNqXz/qsPNbuOcbavbl1pR5J0SGM\n69uNH/Ttxti+cQzqEY3Lhr8z7VR7/TPvYuC/TZWHqOqTqjpWVccmJiae3pOShthIIsZ0AA8++CAD\nBgxg8uTJbNu2re74zp07mT59OmPGjOHss89m69at5Ofn06dPH2pqnK+Ni4uL6dWrF5WVlU3ePzMz\nk4kTJzJ8+HBmz55Nbm4uAI8//jgZGRkMHz6cuXPnAvDRRx8xcuRIRo4cyahRo5qdZru9q1e+NwPI\nAK4SkYwGl90FZKrqcOA6nGQcEUkBbgPGqupQnAR9rq9ib0veeH8tXbqUCRMmMGrUKL7xjW9w6NAh\nAIqKirjhhhsYNmwYw4cP59VXXwXg7bffZvTo0YwYMYLzzz/fRz+5/xSVV7F611Ge+ngXt724nqmP\nrGDE/f/m6qdW85t3tpGVW8pFw5P53RUj+Ph/prLqF+fz+6tHc/1ZfRmSHGPJtWnXfNmCvQ/oVW8/\n1X2sMXPxdnlIraQhsGUpVBRDcIRPHmlMh/avO+Hghra9Z49hMGNhk6fXrVvHkiVLyMzMpKqqitGj\nRzNmzBgA5s2bx+LFi+nfvz+rV6/mpptu4oMPPmDkyJF89NFHTJ06lX/+859ccMEFBAUFNfmM6667\njieeeIIpU6Zw7733cv/99/Poo4+ycOFCdu/eTUhICHl5eQA88sgjLFq0iEmTJlFUVERoaGjb/j58\ny5PyvQxgIYCqbhWRviKS5D4XCISJSCUQDuw/rWg60ftr8uTJrFq1ChHhqaee4uGHH+a3v/0tDzzw\nADExMWzY4Pycubm55OTkcOONN7Jy5UrS0tI4dsx73Y/8JetYCSu+ymH917lsyM5nR04RtZNJJ8eE\nMiw1hm+NSWVYSgzDUmKIiwj2b8DGnAZfJthrgP4ikoaTWM8Frm54kYjEAFOAa30SVfcMQCFnK6SM\n8ckjjTGn5uOPP2b27NmEh4cDcMklTp+JoqIiPvnkEy6//PK6a8vLywG48soreemll5g6dSpLlizh\npptuavL++fn55OXlMWWKM6vr9ddfX3fP4cOHc8011zBr1ixmzZoFwKRJk7jjjju45pprmDNnDqmp\nqW3/Q/uOJ+V7XwBzgI9FZDzQB0hV1XUi8gjwNVAK/FtV/+2DmNuUt95f2dnZXHnllRw4cICKigrS\n0tIAeO+991iyZEnddXFxcSxdupRzzjmn7ppu3bp554f1ocrqGtbtzeXDrYf5YOthth8uAiAxKoQR\nqTFcNDyZ4akxDE2JITEqxM/RGtO2fJZgq2qViNwCvIPzNeLTqrpJROa7zy92Xzob50O62CeB1R9J\nxBJsY1rWTEugr9XU1BAbG0tmZuZJ5y655BLuuusujh07xrp16zjvvPNa9Yxly5axcuVKli5dyoMP\nPsiGDRu48847mTlzJsuXL2fSpEm88847DBo06HR/nPZsIfCYiGTi1FmvB6rdtdmXAmlAHvCKiFyr\nqs/Vf/Ep9ZvpRO+vW2+9lTvuuINLLrmEFStWsGDBAh9E7V9Hi8pZsS2HD7YdZuVXORSWVRHkEsan\ndWPu+N5MHZhIWkKETdxiOj2f1mCr6nJVHaCq/VT1QfexxfWSa1T1b6rquxq+uDQICrc6bGPasXPO\nOYc33niD0tJSCgsLWbp0KQDR0dGkpaXxyiuvAM7kEl988QUAkZGRjBs3jttvv52LLroIl6vpYbpi\nYmKIi4vj448/BuDZZ59lypQp1NTUkJWVxdSpU3nooYfIz8+nqKiInTt3MmzYMH7+858zbtw4tm7d\n6uXfgFe1WL6nqgWqeoOqjsSpwU4EdgHfAHarao6qVgKvAWc1fECb9pvxAm+9v/Lz80lJSQHgmWee\nqTs+bdo0Fi1aVLefm5vLxIkTWblyJbt37wboUCUiOw4XsejDHcz+w38Z++B7/OSVL/hs9zFmDO3B\n4mtHs/7eb/L89yfyvclppCdGWnJtuoSuPZMjQEAAdB9sI4kY046NHj2aK6+8khEjRtC9e3fGjRtX\nd+7555/nhz/8Ib/+9a+prKxk7ty5jBgxAnC+xr/88stZsWJFi8945plnmD9/PiUlJaSnp/PXv/6V\n6upqrr32WvLz81FVbrvtNmJjY7nnnnv48MMPCQgIYMiQIcyYMcNbP7ovtFi+JyKxQImqVuCMGLJS\nVQtE5Gtgonvkp1LgfGCtT6NvA956fy1YsIDLL7+cuLg4zjvvvLrk+e677+bmm29m6NChuFwu7rvv\nPubMmcOTTz7JnDlzqKmpoXv37rz77rte/9lbQ1X5MjufdzYd5J1NB9mZ43zhPCI1hh+dP4DzBnVn\nSHI0AdYJ0XRhorU9DDqosWPH6tq1p/l5/uYtsG05/Gwn2F/Wxpxky5YtDB482N9hdHiN/R5FZJ2q\njvVTSLUxXAg8yvHyvQfrl++JyJnAMzhD8W0Cvqeque7X3g9cCVThlI58X1XLm3pWY5/Z9v46Pb74\n/VVV1/DZ7mO8vekg/950iIMFZbgChInp3bhgSA+mZSTRM8ZmRzSdn6ef2daCDU4d9vpnoegwRCW1\nfL0xxnQiqrocWN7gWP3SvU+BAU289j7gPq8GaPxCVVm9+xivrsvm3S2HyCupJCQwgCkDEvnZkIGc\nP7g7seE20ocxjbEEG+p1dNxoCbYxxpgu7UB+Ka+uy+aVddnsPVpCZEgg0zKSuGBIEucMSCQ82FIH\nY1pi/0oAursT7MOb4YzOP7i/Ma2hqtY56TR09HI8b7P3V+u01fuqvKqa97cc5uW1Waz8KocahYnp\n3bj9/P7MGNqTsOCmOwkbY05mCTZARDxEJtlIIsY0ITQ0lKNHjxIfH29JUCuoKkePHu3oE9J4jb2/\nWqct3ldbDxbw8ppsXl+fTW5JJT1jQrl56hl8a0wqfeJt8jVjWssS7FpJQ5wSEWPMSVJTU8nOziYn\nJ8ffoXRYoaGhHX1CGq+x91frteZ9VVZZzbIvD/Dsqr1kZuUR5BK+mdGDy8emcnb/RJuC3Jg2YAl2\nre4Z8NmfoboKXPZrMaa+oKCguhnmjGlr9v7yjaxjJTy3ei8vr8kit6SS9MQI7rkog9mjUuhm05Ib\n06Ysk6yVNBSqy+HYTkgc6O9ojDHGmNNWU6N89FUOz67ay4fbDhMgwrTBSXz7zD6c1c9KcozxFkuw\nayVlOOtDmyzBNsYY06HlFlfw8tosnlu9l6xjpSREhnDr1DO4akJvG6/aGB+wBLtWwkAQlzOSCHP8\nHY0xxhhzygrKKlm8YidP/3c3ZZU1jE/rxv9cMIgLhvQgODDA3+EZ02VYgl0rKBTiz3BasI0xxpgO\npKKqhhdW7+XxD3ZwrLiCS0cm88Nz+zGoR7S/QzOmS7IEu76kDNj3ub+jMMYYYzyiqvxr40Eefnsr\ne46WcGZ6PHddOJhhqTH+Ds2YLs0S7Pq6D4FNr0N5IYRE+TsaY4wxpklr9xzjweVbWP91HgOSIvnr\nd8Zx7sBE67hoTDtgCXZ9tVOmH94Cvcb7NxZjjDGmETtzinj47a28s+kQ3aNCeOiyYVw2OpVAl9VY\nG9NeWIJdX/2RRCzBNsYY044UlFXyu39/xbOr9hIaGMBPpg3ge2enER5s/ys3pr2xf5X1xfSG4Cjr\n6GiMMabdUFXe+mI/D/xzC0eLy7l6fG9+9I0BJEaF+Ds0Y0wTLMGuLyAAug92D9VnjDHG+NeOw0Xc\n++ZGPtl5lOGpMTz9nbEMT431d1jGmBb4NMEWkenAY4ALeEpVFzZyzbnAo0AQcERVp/gyRpIyYNMb\noArWUcQYY4wflFZU8/sPt/Pkyl2EBrl4YNZQrh7fG1eA/X/JmI7AZwm2iLiARcA0IBtYIyJvqerm\netfEAn8Apqvq1yLS3Rux3PX6BgrLqnjiqlEnn0waCuv+BgX7ISbFG483xhhjmvT+lkPc99YmsnNL\nmTM6hV/MGGzlIMZ0ML5swR4P7FDVXQAisgS4FKhfj3E18Jqqfg2gqoe9EUhJeRXr9hxr/GR3d0fH\nw5stwTbGGOMz2bkl3L90M+9uPkT/7pEsmTeRienx/g7LGNMKvhzTJwXIqref7T5W3wAgTkRWiMg6\nEbmusRuJyDwRWSsia3Nyck45kH6JkezPL6Okourkk3UjiWw85fsaY4wxrfHa59lM+91K/rP9CHfO\nGMSy28625NqYDqy9DZoZCIwBZgIXAPeIyICGF6nqk6o6VlXHJiYmnvJD0hMjAdiVU3zyybA4iE6B\nQ9bR0RjTNYjIdBHZJiI7ROTORs7HicjrIvKliHwmIkPrnYsVkX+IyFYR2SIiZ/o2+o6tsrqGBW9t\n4o6Xv2B4agzv3nEO86f0Iziwvf3v2RhzKnxZIrIP6FVvP9V9rL5s4KiqFgPFIrISGAF81ZaBpCdG\nALDrSDFDUxqZTrZ7ho0kYozpEjzpHwPcBWSq6mwRGeS+/nz3uceAt1X1WyISDIT7MPwO7XBhGbc8\nv57P9hzju5PS+MWFgwiyyWKM6RR8+S95DdBfRNLcH8JzgbcaXPMmMFlEAkUkHJgAbGnrQNISIhCB\nXTlFjV+QlAE526C6sq0fbYwx7U1d/xhVrQBq+8fUlwF8AKCqW4G+IpIkIjHAOcBf3OcqVDXPd6F3\nXJ9/ncvFT/yHL/fl8djckdx7cYYl18Z0Ij7716yqVcAtwDs4SfPLqrpJROaLyHz3NVuAt4Evgc9w\nhvJr82Lo0CAXKbFhjZeIgDOSSE0lHNne1o82xpj2xpP+MV8AcwBEZDzQB+dbyDQgB/iriKwXkadE\nJML7IXdsL6z+miv/9CnBgQG89sNJXDrSOtQb09n4dBxsVV0OLG9wbHGD/d8Av/F2LOmJkexsqgW7\ne70p02s7PRpjTNe1EHhMRDKBDcB6oBrn/yGjgVtVdbWIPAbcCdxT/8UiMg+YB9C7d29fxt2ulFdV\nc9+bm1iyJouz+yfwxFWjiA0P9ndYxhgv6LLfR/VLjGD3kWJU9eSTCQMgIBAO25TpxphOr8X+Mapa\noKo3qOpI4DogEdiF09qdraqr3Zf+AyfhpsHrT6tjemdwIL+UK/60iiVrsrjp3H787Ybxllwb04l1\n2anS0xMjKamo5mBBGT1jwk48GRjsJNk2kogxpvOr6x+Dk1jPxZmToI57ErASd43294GVqloAFIhI\nlogMVNVtOB0f7YOzgc92H+Om59dRWlHN4mtHM31oT3+HZIzxsi6bYPdLcMoEdx4uPjnBBqdM5OtV\nPo7KGGN8S1WrRKS2f4wLeLq2f4z7/GJgMPCMiCiwCfhevVvcCjzv7ry+C7jBpz9AO7fsywP8+KVM\nUuPCePHGifRPivJ3SMYYH+i6CXZ391jYR4qY3D/h5AuShsDGf0BpHoTF+jg6Y4zxnZb6x6jqpzgT\ngTX22kxgrFcD7KCe+WQPC5ZuYkzvOJ66fqyVhBjThXTZGuzuUSFEBLuaGUlkiLO28bCNMcacAlXl\nkXe2cd9bmzh/UBLPfX+CJdfGdDFdNsEWkeZHEkkZC65g2PiabwMzxhjTYVVV13Dnqxv4/Yc7mDuu\nF4uvHU1okMvfYRljfKzLJtjgzOjYZAt2RDwMvQwyX3DKRIwxxphmlFZUM/+5z3lpbRa3nncG/zdn\nGIE2eYwxXVKX/pffLzGSfXmllFZUN37BhPlQWQzrn/VtYMYYYzqUvJIKrv3Lat7feogHLh3CT745\nEBHxd1jGGD/p0gl2eqIzksjuI020YiePhN5nwWdPQk0TSbgxxpgubX9eKZcv/pQN2fksuno03z6z\nr79DMsb4WddOsBOckUSarMMGmDgf8r6GbcubvsYYY0yXtP1QIZf98RMO5pfxt++O48JhNsa1MaaL\nJ9hpCRGI0HQdNsDAmRDTG1b90XeBGWOMafc27y/gW4s/papGeekHZ3JWv0aGfDXGdEldOsEOC3aR\nHBPGriPNtGC7AmH8jbD3v3DgS98FZ4wxpt3KLa5g3rNrCQty8doPzyIjOdrfIRlj2pEunWBDCyOJ\n1Br9bQgKh9WLm7/OGGNMp1dVXcOtL67ncGE5i789hl7dwv0dkjGmnenyCXa/xEh25RShqk1fFBYH\nI66CDa9AUY7vgjPGGNPuPPzONv6z4wi/njWUkb1spl9jzMkswU6MoLiimkMF5c1fOGE+VFfA2qd9\nE5gxxph2583MfTy5chfXndmHK8b28nc4xph2qssn2OmJzkgiu5obSQQgcQCc8Q1Y+xeoqvBBZMYY\nY9qTTfvz+fmrXzK+bzfuuSjD3+EYY9oxS7DdY2E3O1RfrQk/hKJDsOl1L0dljDGmPcktruAHz64j\nNiyYRdeMJshmaDTGNKPLf0L0iA4lPNjFzpY6OgL0Ow8SBsCqP0BzNdvGGGM6jarqGm558fO6To2J\nUSH+DskY0875NMEWkekisk1EdojInY2cP1dE8kUk073c64OYnJFEmprNsb6AAJjwAziQCVmrvR2a\nMcaYduCht7fy3x1HrVOjMcZjPkuwRcQFLAJmABnAVSLSWBHbx6o60r38yhexpSdEtlyDXWvEVRAa\nYxPPGGPpACTVAAAgAElEQVT8TkSsl52XvZm5jz9/vNs6NRpjTokvW7DHAztUdZeqVgBLgEt9+Pwm\n9UuMZF9eKWWV1S1fHBwBo6+HLUshL8v7wRljTNN2i8gyEblERLp8yV9bs06NxpjW8uUHcgpQPyPN\ndh9r6CwR+VJE/iUiQ3wRWHpiBKqw25MyEXBmdkRhzZ+9GpcxxrTgPOAo8CKQJSIPiEhfv0bUSRwr\nrmDe39cRF26dGo0xp669fWJ8DvRW1eHAE8AbjV0kIvNEZK2IrM3JOf2JX2pHEmlxRsdasb1h0EWw\n7hmo8PA1xhjTxlR1papeByQD/wdcBOwQkbdFZI6IBPo3wo5JVfnRS5nkFJWz+Frr1GiMOXW+TLD3\nAfUL2FLdx+qoaoGqFrm3lwNBIpLQ8Eaq+qSqjlXVsYmJiacdWHqCMxa2R0P11Zp4E5TlwZcvnfbz\njTHmdKhqvqr+XlVHATcD5wKv4LRq/1JEms0QPeiAHicir7u/XfxMRIY2OO8SkfUi8s82/LH85l8b\nD7LyqxzumjGIEdap0RjTCr5MsNcA/UUkTUSCgbnAW/UvEJEeIiLu7fHu+I56O7CwYBcpsWGed3QE\n6D0Reo6AVYttyD5jjF+JSKSI/EBE1gK/B94DZgMPAN/HSbabeq0nHdDvAjLd3y5eBzzW4PztwJa2\n+Fn8rayymgeXbWFQjyiundjH3+EYYzoonyXYqloF3AK8g/NB/LKqbhKR+SIy333Zt4CNIvIF8Dgw\nV9U32avHQ/XVEnEmnjmyDXZ+4L3AjDGmCSIyUUT+AhwA7gWWA/1U9SJVfUtV/4CTOH+zmdt40gE9\nA/gAQFW3An1FJMkdQyowE3iqDX80v/nTR7vYl1fKgkuGEGh118aYVvLo00NErhGRC+vt/0pEckRk\nhYg01lGxUaq6XFUHqGo/VX3QfWyxqi52b/9eVYeo6ghVnaiqn5zqD9Ra/RIj2ZVTzCnl80PnQER3\n+ORxa8U2xvjDf3E6i1+H03/lXlX9usE1WTidIJviSQf0L4A5UPftYh+cMj+AR4H/AWqaekBb95vx\nln15pfzxox3MHNaTienx/g7HGNOBefrn+V1ANYCIjAJ+DjwCqHvd4aUnRlBUXsXhwnLPXxQYApN/\nDLtWwGdPei02Y4xpwhmqOl1VX1fVRscZVdViVb3hNJ+zEIgVkUzgVmA9UC0iFwGHVXVdcy9u634z\n3vK/y50ql19cOMjPkRhjOjpPE+w+wDb39iXAm6r6EHAHMNUbgflaqzo6AkyYDwNmwDu/hKw1XojM\nGGOalCAiExoeFJEJIjLWw3t42gH9BlUdidNangjsAiYBl4jIHpzSkvNE5LlT/zH8b9Wuoyz78gDz\np/QjNS7c3+EYYzo4TxPsSqC2F/q5uGvxgFwguo1j8otTHqqvVkAAzP4jRCfDK9dDsdf7ZBpjTK0n\nODE5rtULpx+LJzzpgB7rPgdOp8mV7qT7F6qaqqp93a/7QFWvbc0P4k9V1TUseGsTKbFh/OCcfv4O\nxxjTCXiaYK8G7hGR64DJwNvu42k4nWs6vB7RoYQHu069BRsgLA6u+DsUH4HXvg81HswIaYwxp28I\nzvwBDX3uPtciDzugD8bpgL4Np9Pk7acdeTvy4posth4s5JczBxMW7PJ3OMaYTsDTSQjuwOkkcxFw\nv6rucR+/DFjlhbh8LiBASEuIOPUW7FrJI2HGQ/DPH8HK38C5Jw0la4wxba0GiGnkeBynMEqUe96B\n5Q2OLa63/SkwoIV7rABWePrM9iKvpILf/nsbE9O7MWNoD3+HY4zpJDxKsFV1MzCikVM/B6raNCI/\nSk+MJDMrt/U3GPMdyFoNKxZC6jg44/w2i80YYxrxCfAToGFZxk+AT30fTsfz/979ioLSSu67eAju\naRiMMea0tWqQT/ekBjOBZFU9hWE32rd+iRFk55ZSVtnKEg8RmPlb6D4YXv0+5Ge3bYDGGHOiu4FZ\n7lkUH3Ev63E6o9/l59java0HC3h21V6undiHwT07RXciY0w74ek42C+IyG3u7SCcmuylwCb3ME2d\nQnpiJKqw52gry0QAgiOceuzqCnjlO1BV0WbxGWNMfe7h8SYAG3Fqo2cAG4CJqrrWn7G1d6rK/W9t\nJjosiDumNVv9Yowxp8zTFuxzcSY0ALgYiAJ6AguAe9o8Kj9JT2jlSCINJfSHS38P2Wvg3XvbIDJj\njGmcqm5S1W+7J+kaoqrXqepGf8fV3r298SCf7jrKT6YNIDY8uOUXGGPMKfC0k2M34JB7exrwmqoe\nEpEXgE7Tm+/4UH2tGEmkoSGz4evVsPqP0HuCs2+MMV4iIj2AEzLFRmZ1NEBZZTW/XraFQT2iuGp8\nb3+HY4zphDxtwc7BGZIPnAT7Q/d2OM1Mj9vRhAcHkhwTys7TbcGuNe1XTmfHN2+BI9vb5p7GGOMm\nItEi8lcRKcWZHGZ3g8U04k8f7WJfXikLLhlCoKtVXZGMMaZZnn6yvAI8LyLv4Uws8677+EigU2WO\n6YmRbdOCDRAYDJf/zZlS/eXroKKNEndjjHE8hFODfRVQBnwHp2xvP3C1/8Jqv/bnlfLHj3Ywc1hP\nJqbH+zscY0wn5WmC/T/Aozgdaaapaon7eDLwZ28E5i/9Ep2xsFW1bW4Ykwpz/gyHt8DfLoKC/W1z\nX2OMgZnAzar6Bs63iZ+q6v8CvwS+7dfI2qm/fbKHqmrlFxcO8ncoxphOzKMEW1WrVPV3qvojVf2i\n3vFHVPVJ74Xne+mJkRSWV5FT1IajD55xPlz5HBz5Cp48F7I+a7t7G2O6snhgp3u7AGeCGYCPgSl+\niagdq6qu4fX1+zh3YCKpceH+DscY04l5XHwmIt1E5G4RedG93CUi3bwZnD/UdnTcebiNyzkGXwTf\nexeCwuBvM+HzZ9v2/saYrmgvkOre3oEz2y7AVKCNat06j//sOEJOYTmXjU5t+WJjjDkNno6DPQbn\nw/smINS93AJsF5FR3gvP99ITIwHYdcQL/29KyoAbP4Q+Z8Fbt8Dy/4HqyrZ/jjGmq3gNZxhVgMeA\nX4rIAeBJ92LqefXzfcSEBXHe4O7+DsUY08l5OkzfI8C/getUtQJAREKAvwO/w2kt6RR6RocSFuQ6\n/bGwmxLeDa551Rkfe9UiOLwZLn8GIqyzjTHm1Kjq3fW2XxORs4DJwDZVXea/yNqfgrJK/r3pIFeM\n7UVIoMvf4RhjOjlPS0QmAA/UJtcA7inSHwDGeyMwfwkIENISItjZViOJNMYVCNP/F2Ytduqx/3wu\nHLR5IYwxnhORIHe5Xr/aY6r6mbu/jCXXDSz/8gDlVTXMGZ3i71CMMV2Apwl2Oc7wfA1Fu895RESm\ni8g2EdkhIk1OUCMi40SkSkS+5em921K6eyQRrxt5FdzwL6dM5C/TYPOb3n+mMaZTUNVKnKnRO81c\nBN706ufZpCdGMLJXrL9DMcb4Q3UVFOVAzjb4ehXsz/Tq4zwtEXkHWCQiV6nqNgARGQT8HnjbkxuI\niAtYhDNRTTawRkTeUtXNjVz3EE5Jil/0S4xk+YYDlFVWExrk5a8SU8fAvBXw0rXOWNmT74Bz73TG\nzjbGmOYtw0my/+DvQNqzvUeLWbMnl59dMBAR8Xc4xpi2oAqluVB4EAoPHF8XHYKSY1B6zDlf4l6X\nF5z4+n7nw7df81p4nibYPwLeBDaLyFH3sXhgDfBjD+8xHtihqrsARGQJcCmwucF1twKvAuM8vG+b\nS0+MoEZh79ESBvaI8v4Do3rAd5bBsp/Af34Hm9+AGQ9D/2nef7YxpiNbBdwvIiNxPo9P+OpNVV/w\nS1TtzGuf70MEZo+y8hBj2hVV51v8qlIoK4DyQicRLitwr/NPPFacc2JCXd1IEUVoDITHQ1g3CE+A\nhAEQFufsh8U5feHC4iDau58HHiXYqnoQmCAi5wMZ7sObVPWDU3hWCpBVbz8bp7a7joikALNxOk36\nLcHuVzuSSE6RbxJscFqsL/09DJ0Dy38Gz38LBl0EF/wvxPXxTQzGmI7mMff6++6lPgW6fIJdU6O8\ntj6bs/rFkxwb5u9wjGm9mmonsczdC7l7IM+9zt0L+dkQEABBERAcAcHh7u1wCAp3jgWFQ2AoePIt\nTmDIia+rW4dDcKSzHeA6sYX4hBbj2mN5zizWVeVOMlxVfvI2HkzsJy4IiYKIRKdRstcEZx3V01lH\nJzvryB4QFHqav+i24WkLNgCq+j7wvpdiAWe2yJ+rak1zX+OJyDxgHkDv3r3bPIi0BGcs7F1H/DC1\neb/z4IefwKeLYOVvYNF4OPuncNat7eZNY4xpH1TV47kMuqo1e46RdayUH39jgL9DMaZpNdVQfOTE\nUofadX62k0jnZ0F1Rb0XiTNbdGwfSDvbaQ2uLHYS2ooSJ8GtKIHKEmddUQRa7f2fJSDoeCtxbYtx\nYCi4gp3EPTAEXCHHtwNDnPMh0RAa7STSITHubfexoHDP/jBoR5pMsEXkak9v4uHXkPuAXvX2U93H\n6hsLLHEn1wnAhSJS5Z4GuP7z6sZ4HTt2bBvNaX5cREggPWNCvTuSSHMCQ+DsO2D4FfDOL+HDX0Pm\n83Dhb6xsxBjT5kRkOk5ruAt4SlUXNjgfBzwN9APKgO+q6kYR6YUzXGsSTjPUk6r6GO3Iq59nExHs\nYvrQHv4OxXRlFSWQ9/WJrc55e50EusBdN3xS8itOi210MvQY5kxYF9fXSajj+kJMLwgM9jwGVVAP\n+kSrQlWZOzEvPp6g10/eK4uhpqqR0otuTmt3B0uGvaG5FuznPLyHp19DrgH6i0gaTmI9FzghiVfV\ntNptEfkb8M+GybWvpCdGsNMXI4k0JyYVrngGdn54vGxk4EyY/n9WNmKMQUTube68qv7Kg3t40gH9\nLiBTVWe7O7gvAs4HqoCfqOrnIhIFrBORdxt2XveX0opqlm84yIxhPQkPPqUvbE1nUF3llCqU5UNA\noNNKWr8F1dXIe6I2uayrAS6A8vzj+xXFzjXNcne+q1/KUXToxEuCwp1EOToZEge7yx1qSx7cZQ+R\n3cEV1Fa/DSfpFQ8HbnBFQkhk2z27C2ryE6etv3pU1SoRuQVnRBIX8LSqbhKR+e7zi9vyeaerX2Ik\nr6/fh6r6v9d5v6lO2ciqP8BHDztlI2NugAnzoFu6f2MzxvjTtxvsB+H0dykDDgAtJth41gE9A1gI\noKpbRaSviCSp6gH3c1DVQhHZ4n5+u0iw/735IEXlVTY1ui+oOgloVbmToFZVOOv6tba1tbflRY10\nZCs4MamtLofgqBPLBELc5QN1x2Kc1tXiHKe8oujw8e3iw04tcHP1veI6MeGurnA61NW0wQzLEnC8\nfKP/N51Gsbi0463PEQnWytvJ+fRPelVdDixvcKzRxFpVv+OLmJqSnhBBYVkVR4oqSIxqB0PmBQbD\n5B/BsMvh/V/Bmj/D6sUw4AKYMB/Sz7V/rMZ0Marav+ExEekOPAP8ycPbtNgBHfgCmAN8LCLjgT44\nZX51zXIi0hcYBaz28Lle94912aTEhjEhrZu/Q+k8qqsgd7czlvCRbXBku3t7O1QUnvr9giIaJM8x\n7tKHkOOJeNFBOPLV8eS7sQQ4JNpJWiO6Q3w/6D3RaQGOSHTuWVPVeAe7qjInsa4qc2qHT0joY05O\n7IMjneS5JcERbdv6bDoc+86sCenukUR25hS1jwS7VkwKzPkTfGMBrPsrrH0anp0FiYNg/DwYMdf5\nh22M6ZJU9bCI3I1TutdWJXYLgcdEJBPYAKwH6gpGRSQSZ3jVH6lqQcMXe7tjemMO5pfx3x1HuHnq\nGQQEWONDq1SVO7MN7/0vHNrkJLlHd56Y4EYlQ+IAGHk1xPZ2OuMHhp7cia3+fnCkuyNbdONlGs1p\nWMIRGOok0TYIgGlnLMFuwtCUGFwBwsqvcpiYHu/vcE4W3ROm3gVn/wQ2vgar/wjL7oD374fR18G4\nG61O25iuqxJI9vDaFjugu5PmGwDEqZnbDdSWlAThJNfPq2qjszZ4u2N6Y97I3EeNwhwrD/FcTTUc\n+AJ2fwS7PnJmu6sqdVps49IgcSAMmO6sEwZCQn+nVdeXRCAozFmiknz7bGNOgSXYTegWEczkMxJ4\nM3M/P/3mwPbbAhIY4ky5PmIuZK12ykY+/YMzzF//CyDjUqeMJNy+IjWmsxGRsxoewkms/wdY6+Ft\nWuyALiKxQImqVuCMt71SVQvcyfZfgC2q+rvW/yRtS1V5dV02Y/rE1Q27ahqh6pR27P4Idq2APf+B\nsjznXOJgGHM9pE2BvpOcMgtjjMcswW7G7FEp/OilTNbuzWV8e6/hE3FqznpPhPx9sOYp+OJF+Opf\nTkeOPmfBoJkw8EJr2Tam8/gPTi+uhi0A/wVu9OQGHnZAHww8IyIKbAK+5375JJyOlhvc5SMAd7n7\n2/jNhn35bD9cxIOzh/ozjPalutJJpg9+CQc3HF+X5jrnY3o7w8ClnQtp51jrsDGn6bQTbBHppqrH\n2iKY9mZaRhJhQS7eyNzX/hPs+mJS4Bv3wXn3wIH1sHU5bF0Gb9/pLEnDYNCFTsLdY7h1jjSm40pr\nsF8D5Khq2ancpKUO6Kr6KXDSTC2q+h9OTu797tV12QQHBnDRcE+rZDqZimJ3Eu1OpA98CYe3HJ9W\nOjAUumfA4EsgZbSTUMel2f8LjGlDzSbYIlIApKvqEff+m8AP3FOnIyJJwH6cVo9OJyIkkAuGJLHs\nywMsuHgIwYEdbNK0gABIGeMs59/jdE7ZttxJuFf+Bj56yOmtnX6u08Lde6J9yBrTgajqXn/H0N5U\nVNXw1hf7mZaRRExYFxjFobLM6YC4/3PYv95ZcrYen1AkrJszScmEeU6DSo9hEN//1DsXGmNOSUv/\nwiKB+lnleUB4g2s6dTZ26agU3sjcz4pth/nmkA4+E1h8P2fK9bNudcYJ/eptJ9ne8hasf9a5JrKH\nu9TkTGfdYxgEdMq/n4zp8ETkTuCwqj7d4Pj3gHhVfdg/kfnPh9sOk1tSybc6Y+dGVWckj72fHE+m\nD292hqADCE9wWqQHXww9R0LPEc5EJtZoYozPtcWfsD7pEe4vZ5+RQHxEMG9k7uv4CXZ9EQkw6lpn\nqalxWjy+/tS9rILN7tG9gqOg1zjoNcHd+jHUafW2D2xj2oN5wLWNHN8CPAt0uQT71XXZJESGcHb/\nBH+H0jYqSpzOh9vfge3/dqbbBgiNheRRcNZtzjplNESn2GezMe2EfUfUgkBXABePSOaFz76moKyS\n6NBO+JVjQAAkZTjLOHffpbwsZ1SSvZ84CfeKhdT9LRUaA0lDnaWHe919sDNskjHGl5JxyvQa2o8z\ngUyXcqy4gg+3Heb6M/sS6OpgJX315e6B7e86CfXulc64z0HhTjnf5B87ayvnM6ZdaynBVk5uoe7U\nLdaNmTUqhb99soe3NxzkinG9Wn5BZxDby1mGfcvZLy90Oskc3ACHNsLBjbD+Oagsds6LC+LPgO6D\nnPq++DPcSz8bItAY7zkMDAP2NDg+HDjq82j8bOkX+6msVi4b08HKQ1ThQCZsfBW++rczQyJAt3QY\ncwP0nwZ9JtlkKsZ0IC0l2AK8IiIV7v1Q4O8iUureD/ZaZO3IiNQY+saH80bmvq6TYDcUEgW9xjtL\nrZoaZ8rc2oT70Eans83WZcdrAgHC409MuOPPcMpMYns756wVxpjWeg34fyKSrarrAURkNPBb4B9+\njcwPXvs8m4ye0Qzu6ePJT1orLws2vAxfvOQk1QFB0HcyjL0B+n/T+bw0xnRILSXYf+fEFuvnGrlm\nd9uF0z6JCLNGpfDY+9s5mF9GjxhrRQCc0pL4fs6Scenx49WVkLsXju5wL9udEUx2fgCZz594j8Aw\niEl1WstjUp2xWGv3o5MhqqeVnhjTtF8CI4G1IuIe0Jg4nPGx7/JbVH5QVF7Fl/vyuf38/v4OpXll\nBbD5TfjyJdjzsXOs95lw0aMwZBaExfk3PmNMm2g2wVbV7/gojnZv1sgUHn1vO299sY9551irQrNc\nQZBwhrM0VF4Ix3ZBfrbTepPvXvKynFbw4sMnvyY0xkm0I5OcdVSP40tkD4js7rSEh8ZYa7jpUlS1\nGDhXRM4HRrsPr1PVD/wYll9sO1iAKgxNboczDlZXOg0MXyxxhkqtKoNu/WDqL2H4FRDX198RGmPa\nWEvjYAcAQ4Htqlra4Fw4cAawUbV2wM3Oq29CBCN7xfL6+v2WYJ+OkChn6KieIxo/X1nqzESZ/zUU\nHIDCA1B0yFkXHnI6XRYegJrKk18bEOSMjhKe4Kzrb4fHQ1is0zoU6l6HxTnxWFJuOjhVfR94399x\n+NPm/QUADE5uZ+UhWWvgjfnOt3nh8TD6Ohg+1xn1wz57jOm0WioRuQb4CTCmkXMVOCUkfwCebOO4\n2qVZI5NZsHQz2w4WMrBHlL/D6ZyCwppu/a6l6kzvW+hOwIuPQnEOlBxxxvcuPuJs5+52zlUUNn0v\ncTmJd2issw6JhtBoJ/EOabiOcs4FR0FwOARHQFCEex3ulMwY40Mi8hiwU1Ufb3D8NqCvqt7hn8h8\nb/OBQmLCgkhuLyV8VeXO6Ev/fRSiU+GKZ2HgDOcbPmNMp9dSgv094LeqWt3whKpWicgjwI10kQT7\nohHJPLBsC29k7uPn0wf5O5yuS8QZmSS8GyQNafn6yjIoOQpleVCa5yTnZe51w/3yQidpLy90aiWb\nS84bCgo/nmwHRzo9/oPCnWmJT9gOc5bAMOd4YCi4gp11YEi9JRRc9fZdQc6+KxgCg521K8QS+65t\nDjCrkeOfAj8FulCCXUBGz2ikPbQKH9wAr893On6P+jZc8L/OH+fGmC6jpQR7EPBJM+c/BR5pu3Da\nt9rJC95cv4+ffXMgAQHt4IPctCwoFGJSnOVU1dRARZGTcJcXHF9XlEBliXOuotjZr92uLDm+rixz\nWtMry6Cq1CmBqd2urmj5+Z4QV70E3J14BwQe33YFNjge5JTTBLjc24GN7AeCBDjHxFVvHegk9HXH\nApwFcW+Le2lwzOMJX919qlWb39bG9hseqzn5/AnnOPE6rTl5v+5Yvf2mlsGXwIALWv2fsZUSgWON\nHD8KdPdxLH5TXaNsO1jA1eP7+DmQKqfFesVCpwHgqpdg4HT/xmSM8YuWEuwYoLnvs4KBLvVn+exR\nKdy+JJM1e44xIT3e3+EYbwsIcFqeQqNp83k7aqqdhLu6wvk6uars+Lq64sT9qnKno1S1e11V7lxT\nu9Ser6l0H6t0LxX1jlc69yovdIZRrF2qK51YaipP3Nfqeuuqln+ezuCEPwzq/XFQ98dE/XMNlh7D\n/RFxNnAmJ4/mdCaNT0DTKe0+UkxZZQ0Z/qy/PrLdabXetxaGzIaZv7M5AIzpwlpKsPfiDAG1tYnz\nI4GvPX2YiEwHHgNcwFOqurDB+UuBB4AaoAr4kar+x9P7+8K0jCTCg128kbnPEmxzegJcEBLp7yg8\nV1PTIOmubtDC27AVuH7LsCcUJ7mtbe1uabvhmgbXBDR+XV0S3XC7Q34j9SzwO/fcBO+6j30TZxzs\nP/ktKh/bfMDdwbGnH/rG1NTAZ0/Cewucb8u+9TQMvcz3cRhj2pWWEuy3gAdE5J+qWlT/hIhEA/cD\nb3jyIBFxAYuAaTitLmtE5C1V3VzvsveBt1RVRWQ48DJOmUq7ER4cyAVDerDsywMsuGQIIYEuf4dk\njG8EBAAB1kmrffk1kA68yvE5CwR4HviVv4LytS0HCghyCf27+zjBLsqBf9zgjGfd/5twyRPO8KHG\nmC6vpd5RC3HKQL4SkV+IyCz3chdOq3YI8JCHzxoP7FDVXapaASwBLq1/gaoWqdYWVxJBO52W/dKR\nyRSUVfHh1hx/h2KM6cJUtVpVrwcGAFcBc4H+wN3Aff6MzZc27y/gjO5RBAf6sMNvaR48Nxuy18LF\nj8PVL1tybYyp0+ynkaoeAyYB63BKN15zL79yH5usqkc9fFYKkFVvP5tGilpFZLaIbAWWAd/18N4+\nNfmMBBIig3kzc5+/QzHGGFR1B87U6BXA48AO4Ad+DcqHNh8o8G15SHkRPH85HN4Kc5+DMdd31BIj\nY4yXtPjnvqpmq+rFOL3VJwATgURVvVhVs5p/9alT1ddVdRDO0FMPNHaNiMwTkbUisjYnx/etyIGu\nAC4ansz7Ww6TX9rIhCfGGOMjItJbRH6F0x/mNSAPuBBI9mtgPpJTWE5OYTkZPX3UwbGyDF66xunM\n+K2/wBnf8M1zjTEdisffp6lqrqquUdXPVDW3Fc/aB/Sqt5/qPtbU81YC6SKS0Mi5J1V1rKqOTUxM\nbEUop2/2qBQqqmt4e+MBvzzfGNN1iUiAiFwqIsuB7cBY4Gc4HcQfVNV3G5u/oDPa4u7g6JMRRKor\n4R/fhV0r4NJFkHFpiy8xxnRNvpyhYg3QX0TSRCQYp1bwrfoXiMgZ4p4lQERG49R4e1qC4lPDU2NI\nS4jg9fVWJmKM8bmvgQeBFTgzNl6oqi+29mYiMl1EtonIDhG5s5HzcSLyuoh8KSKfichQT1/rbXUJ\ntrdbsGtq4M2bYdsymPEbGHm1d59njOnQfJZgq2oVcAvwDrAFeFlVN4nIfBGZ777sMmCjiGTijDhy\nZb1Oj+2KiDBrZAqrdx9jf16pv8MxxnQtiTifo5uAQ6dzo3ojPM0AMoCrRCSjwWV3AZmqOhy4Dme4\nVU9f61WbDxSQHBNKbHiw9x6iCst/Cl++BOfdDRPmee9ZxphOwadzLKvqclUdoKr9VPVB97HFqrrY\nvf2Qqg5R1ZGqemZ7GwO7oUtHJqMKb33RZeZzMMa0D2nAlzjJbbaIPCwiQ2jdyEstjvCEkzx/AKCq\nW4G+IpLk4Wu9avP+Au+Xh7y3ANb+BSbdDmf/1LvPMsZ0Cj5NsDubvgkRjOody8trs6is9nQyDWOM\nOT2qul9VH8BJtG/EGaYvE2cSr7kiknoKt/NkhKcvgDkAIjIe6IPTj8aj0aG8payyml1HihnszfKQ\njyQoz7QAAB+LSURBVH/rTH8+9rvwjftttBBjjEcswT5NP5zSj13/v707D6+quvc//v7mJCfzBAmE\nKUwiCCgqCGJppVqt1ip2Vlt7tQ61g7Z9frdPvR1uW+3g02v7+3W6pdZqh+twO2hrK9paW5UKIqhQ\nJAwiQxgChCGEzNP398feQIyQAU7OkHxez7Ofvc/ea5/9zeZk5cs6a69VXc+9i7vOVCwi0r888Li7\nXwmMI5j866PAFjOL5TeAdwFFYfe9W4FXgF4/RNlfIz9t2H2I9g7vv/7XL/4Mnr4DTv8AvOu7Sq5F\npNeUYJ+ki6eVcfHU4Xz/6Q1U7mtIdDgiMki5+w53v4OgVXsBsLeXp/Y4wpO717r79e5+JkECXwps\n6s254fn9MvLT2iNTpPdDgv3KA0G/68nvgit/Es5kKiLSO6oxYuDrC6YRMePLf3yVJH0mU0QGiS6t\n2r3RmxGeisJjADcCz7l7bW/O7U8VO2vJjUYoH5ITuzdta4Enboc/fhLGnw/vvx8iGbF7fxEZFJRg\nx8CIwmz+/Z2TeW5DtR54FJGU0ssRnk4jGOFpPcGIIZ/p7tx4xR7M4FhAWlqMum7UVML9l8Cyn8Cc\nT8CHfwcZWbF5bxEZVNITHcBA8dG54/jDKzu4888VzD91GIU5avEQkdTg7ouARV32Ley0vZTgQcpe\nnRsPHR3O2qpDvOesGD1Tuf4JePQW8A744K80iYyInBS1YMdIJM341ntP50BDK3c9uTbR4YiIDGjb\nDzRS19x28kP0tbfCX78CD10FReXw8WeVXIvISVOCHUPTRhZyw7zxPPTiNl7cvD/R4YiIDFgVVQeB\nk5zB8eAO+MVlsOQHMOsGuOEpGDIhRhGKyGCmBDvGPvuOSYwqyuaLj66mua3Xo1iJiEgfVFQdIs1g\ncln+ib3Ba3+DhfNg9xp438/h3d9Tf2sRiRkl2DGWE03nG1dOZ+OeOu55dlOiwxERGZAqdtYyoTSP\nrIxI307saIen74QH3gf5I+DmZ+D09/dHiCIyiCnB7gdvnzKMy84YwQ//sZFN1XWJDkdEZMBZG44g\n0meLvweL74azroUb/wYlk2IfnIgMekqw+8lXL59KZnoaX3pUY2OLiMTSwYZWdtQ09r3/dd2eYNrz\nKe+GBT+CaAzHzxYR6UQJdj8Zlp/F7ZdOYemmfTzy8psmNhMRkRNUEc7g2OcRRJ75NrQ1wTu+3g9R\niYgcpQS7H119Tjkzxxbzjccr2F/fkuhwREQGhKNTpPfhAcfqDfDSL2Hm9VBySj9FJiISUILdj9LS\njG+953QONbXxzcc1NraISCxUVNVSkpfJsPw+jPrxt69CRg7Mv73/AhMRCSnB7meTy/L5+PkT+P3L\n2/lbxe5EhyMikvLWVtX2rXvIludh/SKY91nILem/wEREQkqw4+DWCyYxfVQBn3zwZf752t5EhyMi\nkrJa2jp4bXdd77uHdHTAX78M+SPh3E/2b3AiIiEl2HGQlRHh1x+bw4SSXG781XJe2LQv0SGJiKSk\n16vraGnv6P0IImsegZ0vwwVf1qghIhI3SrDjpDg3yv/cOIcxxTl87BfLWbFFU6mLiPTV4Qccp/Wm\ni0hbMzz9dRg+HWZc1c+RiYgcFdcE28wuMbP1ZrbRzN70pImZfdjM/mVmq81siZnNiGd8/a0kL5MH\nbpxDWUEW192/nJXbahIdkohISqnYWUtmehrjhub2XPjFn0FNJVx0B6T1ccZHEZGTELcE28wiwI+B\nS4GpwNVmNrVLsc3A+e5+OnAncE+84ouXYQVZPHjTuQzJjfLRny/j1R0HEx2SiEjKqKiqZUpZPumR\nHv58NR6A5/4LJl4Ap1wYn+BERELxbMGeDWx0903u3gI8DCzoXMDdl7j7gfDlC8DoOMYXN2WFWTx4\n0xzyszL4yM+XHfnKU0REjs/dez9F+uLvQtNBuOjO/g9MRKSLeCbYo4BtnV5vD/cdzw3AE8c6YGY3\nm9kKM1tRXV0dwxDjZ3RxDg/ddC5Z6RE+cu8yXtt9KNEhiYgktV21TRxoaO15iL4DW2HZT+HMa6Bs\nenyCExHpJCkfcjSztxMk2F841nF3v8fdZ7n7rNLS0vgGF0PlQ3N46OZzSUszrrl3GZuq6xIdkohI\n0jr8bV+PI4j8/U6wCLz9S3GISkTkzeKZYO8AxnR6PTrc9wZmdgZwL7DA3Qf8eHbjS3J56KY5dHQ4\n1/xsGVv31Sc6JBGRpFSxM0iwp3SXYO94GVb/FuZ+Egq7+5JURKT/xDPBXg5MMrPxZhYFrgIe61zA\nzMqBR4Br3X1DHGNLqFOG5fPATXNobmvngz9dqiH8RCSuejHCU6GZ/cnMVpnZGjO7vtOxz4X7XjWz\nh8ysD/OX901FVS1jh+aQl5l+7ALu8NR/Qk4JvOWz/RWGiEiP4pZgu3sb8GngL8Ba4DfuvsbMbjGz\nW8Ji/wkMBf7bzFaa2Yp4xZdoU8oKePCmc8lMj/Che17gnudex90THZaIDHC9HOHpU0CFu88A5gPf\nNbOomY0CbgNmuft0IELQeNIv1lYd6r57yIa/wJbFMP92yOrDVOoiIjEW1z7Y7r7I3U9194nu/s1w\n30J3Xxhu3+juxe5+ZrjMimd8iXbaiAL+fNs8Lp46nG8tWsdNv1pBTUNLosMSkYGtxxGeAAfyzcyA\nPGA/0BYeSweyzSwdyAF29keQ9c1tbNlX3/0IIk/fAUNPgZnX9UcIIiK9lpQPOQ5mBVkZ/PeHz+Zr\nl0/l2Q3VXPaDf/Jy5YGeTxQROTG9GeHpR8BpBMnzauAz7t7h7juAu4FKoAo46O5/7XqBWIz8tG7X\nIdy7ecCxZhvsWQOzboBIxgldQ0QkVpRgJyEz47q3jOd3t5yHGXxw4VLuXbxJXUZEJFHeCawERgJn\nAj8yswIzKyZo7R4fHss1s490PTkWIz9VHB5B5HhD9FUuDdZjzzuh9xcRiSUl2ElsxpgiHr/1rVww\nZRjfeHwtN//6JQ42tCY6LBEZWHozwtP1wCMe2Egw6+4U4B3AZnevdvdWgofU+yXDrdhZS2F2BiMK\nj/MMZeVSiOZD2en9cXkRkT5Rgp3kCnMy+Om1M/nKu6fyj3V7uOyHi1m1rSbRYYnIwNHjCE8EXUAu\nBDCz4cBkYFO4/1wzywn7Z19I8BB7zK2tqmXqiAKCyxzD1qUwZjakRfrj8iIifaIEOwWYGTfMG89v\nb5mLO7x/4RK+99QG6pvbej5ZRKQbvRzh6U7gPDNbDTwNfMHd97r7MuB3wMsEfbPTgHtiHWN7h7Nu\nVzdTpDfsh+q1MHZurC8tInJCjjOYqCSjs8qLefy2eXzlj2v4wdOv8dCLlXzuHafywVmjSY/o/0oi\ncmLcfRGwqMu+hZ22dwIXH+fcrwJf7c/4Nu+tp6m1o5v+1y8E63L1vxaR5KCsLMUU5UT54dVn8egn\nz2Pc0By++OhqLvn+Yp5eu1sPQYrIgNTjFOmVSyAShVEz4xiViMjxKcFOUWeVF/Obj8/lp9fOpKPD\nueGXK7j6Zy/wr+3qny0iA8truw+RETFOGZZ37AJbl8LIsyGj3yaRFBHpEyXYKczMeOe0Mv7yubdx\n54JpvLa7jit+9Dy3PfQK2/Y3JDo8EZGY+NxFp/LPL1xANP0Yf7Ja6qFqpfpfi0hSUR/sASAjksa1\nc8dx5VmjWPjs69y7eDNPvrqLa+eO5WPzxjOqKDvRIYqInDAzY3jBcVqnt6+Ajjb1vxaRpKIW7AEk\nPyuDz79zCs98fj5XnDmS+5/fzNu+8w8++cBLLN+yX320RWTgqVwKWDBEn4hIklAL9gA0ojCbuz8w\ng8++YxK/fmErD7+4jUWrdzF9VAHXnTeey2eMIDNdY8WKyACwdQkMnw7ZRYmORETkCLVgD2Cji3P4\nj0tPY+l/XMA33zOd5tYO/v23q3jLXX/ne39dz57apkSHKCJy4tpbYfty9b8WkaSjFuxBICeazofn\njOWa2eU8v3Efv1iymR/+YyM/efZ1Ljt9BFfNLmf2uCGkpR1nhjQRkWRU9S9obYByJdgiklyUYA8i\nZsa8SSXMm1TClr31/HLpFn67Yjt/WLmTEYVZvPuMEVwxYxTTR3UzHbGISLKoXBKsx+oBRxFJLkqw\nB6lxJbl89fJpfP6dk3mqYjd/WrWTXyzZws8Wb2Z8SS6XzxjJFTNGHn/cWRGRRNu6FIrHQ35ZoiMR\nEXkDJdiDXE40nQVnjmLBmaOoaWjhiVd38djKnfzw76/xg6dfY9rIAq6YMZJ3zxip4f5EJHl0dAQj\niEy+NNGRiIi8iRJsOaIoJ8rVs8u5enY5u2ub+NOqnfxp1U6+/cQ6vv3EOqaU5TN/8jDmTy5l5thi\nMiJ6RlZEEmTvBmjcr/7XIpKU4ppgm9klwPeBCHCvu9/V5fgU4H7gbOBL7n53POOTo4YXZHHjWydw\n41snsGVvPU+8uotn1u/h3sWbWPjs6+RnpvOWU0qYP7mU+ZOHUVaoKYpFJI7U/1pEkljcEmwziwA/\nBi4CtgPLzewxd6/oVGw/cBtwZbzikp6NK8nlE/Mn8on5EznU1MrzG/fyzPpqnllfzZNrdgEwpSyf\n8yeX8tZTSjl7bBE5UX05IiL9aOtSyB0GQyYkOhIRkTeJZxY0G9jo7psAzOxhYAFwJMF29z3AHjO7\nLI5xSR/kZ2VwyfQRXDJ9BO7Oht11PLN+D8+sr+bnizfz02c3kZ5mnD66kNnjhzBn/BBmjRtCQVZG\nokMXkYGkcmkw/rVGPBKRJBTPBHsUsK3T6+3AnDheX2LMzJhcls/ksnw+fv5E6prbeGnrAZZt2seL\nm/dz3z+DhNsMpo4oOJJwnzNuCEPzMhMdvoikqpptcHAbzP10oiMRETmmlPwe38xuBm4GKC8vT3A0\nclheZjrnn1rK+aeWAtDU2s4rlTUs2xwk3A+9WMn9z28BYOzQHGaMLmLGmCLOHFPItJGFZGVo+nYR\n6YXKpcFaMziKSJKKZ4K9AxjT6fXocF+fufs9wD0As2bN8pMPTfpDVkaEuROHMnfiUABa2jpYveMg\ny7fsZ9W2GlZs2c9jq3YCkJ5mTBmR3ynpLmJiaR4RzS4pIl1tXQKZBTB8eqIjERE5pngm2MuBSWY2\nniCxvgq4Jo7XlwSLpqcxc2wxM8cWH9m3p7aJVdsPsmpbDSu31fDYqp08sKwSgOyMCKeW5XNaWT6n\njShgSlk+U0YUUJit/twisdSLEZ4Kgf8Bygn+btzt7veHx4qAe4HpgAMfc/el/Rpw5VIYMxvS9K2X\niCSnuCXY7t5mZp8G/kJQid/n7mvM7Jbw+EIzKwNWAAVAh5l9Fpjq7rXxilPia1hBFhdNzeKiqcMB\n6OhwNu+rZ2VlDRVVtaytquUva3bx8PKj3fdHFWUz5XDSPSKfScPyGVeSQ2a6/tiK9FUvR3j6FFDh\n7pebWSmw3swecPcWgsT8SXd/v5lFgZx+DbhhP1Svg9M/0K+XERE5GXHtg+3ui4BFXfYt7LS9i6Dr\niAxSaWnGxNI8Jpbm8b5wn7uz51Aza6tqWVt1iHW7allXdYhnNlTT3hH0EIqkGeVDcphYmscpw44u\nE0tzydcIJiLd6XGEJ4KW6XwzMyCPYEjVtrBl+23AdQBhwt3Sr9Ee6X+t8a9FJHml5EOOMriYGcML\nshhekMX8ycOO7G9ua2fjnjo27qnj9T11bKwOtp/dsIfW9qNd88sKspg4LJdxQ3MZXxKsx5XkMGaI\nWr1F6N0ITz8CHgN2AvnAh9y9I+zyVw3cb2YzgJeAz7h7fb9Fu3UJRKIw8ux+u4SIyMlSgi0pKzM9\nwrSRwQgknbW1d1C5vyFIvsOke1N1PY+vrqKmofVIuTSDkUXZnZLuXMqH5FA+JIcxQ7I1WY7IUe8E\nVgIXABOBp8xsMcHfkLOBW919mZl9H7gd+Ernk2M68lPlUhg1EzI0e6yIJC9lEDLgpEfSmFCax4TS\nPC7ucqymoYXNe+vZsq+ezXsbgu299fyhcgeHmtveULYkL8ro4qClu3xINmPC7THFOZQVZhFNT4vf\nDyXSf3ozwtP1wF3u7sBGM9sMTAEqge3uviws9zuCBPsNYjbyU0s9VK2C82474bcQEYkHJdgyqBTl\nRDmrPMpZ5cVv2O/u7KtvYdv+BrYdaAzW+xvYdqCBVdtqWLS66kh/bwgmjyvNy2RkUTajirMZVZTN\nyMIsRhZlB/uKsinKycA0y5wkv96M8FQJXAgsNrPhwGRgk7vvNbNtZjbZ3deHZSroL9uXQ0eb+l+L\nSNJTgi1C0M+7JC+TkrzMNyXfEHQ7qTrYxLYDDWzf38jOg43srGlkZ00TFTtreapiNy1tHW84JzM9\njbLCoO94WUEWZYVH18PD9bD8TDIiagmXxOnNCE/AncAvzGw1YMAX3H1v+Ba3Ag+EI4hsImjt7h9b\nlwaXHzO73y4hIhILSrBFeiE9khZ0DxmSE/RA7eJwC3iQdDey/UAju2ub2FXbzO6DTazcVsOuNU1v\nSsIBhuRGGZafSWmnZVh+VrCdl8mwgiDxL8hKV4u49ItejPC0E97U4+rwsZXArH4N8LDKJVA2HbIK\ney4rIpJASrBFYqBzC/gZo4uOWcbdOdDQyq6DTWHyHaz3HGqm+lAzew41s6m6nupDzbS0vzkRz4gY\nQ3MzKcmPMjQ3k6F50fCaR18PyY1SnBNlaF6U7IyIEnIZONpbYfsKOOvaREciItIjJdgicWJmDMkN\nkuCpIwuOW87dOdjY2inxbmJfXQt761rYW9fMvrpm9tW3sHFPHdV1zcdsFYegi8rQ3CjF4TUPJ9/F\nOVGKczMoyolSlJ1BcU6UopwMinOj5EaVlEuSqloFrQ0wdm6iIxER6ZESbJEkY2ZB8psT5dTh+d2W\ndXfqmtvYV9fCvvpm9te3cqC+hX31LRxoaGF//dGlcn8D++ta3jRaSmcZEaMwO0pxTgaF2eHSeTtc\nijrty8/KoCArg6yMNCXn0n+2LgnW5XrAUUSSnxJskRRmZuRnBUnuuJLcXp3T2t5BTUMrNQ0t1DQG\nCXlNQys1jS0cCPcfqG/lYGMrVQebWLfrELWNrd0m5hAk5wVZGRRkZ1CQlR4k3tnpFGRlkJeZHsaZ\nTl5W+pHjwf6jxzLTlaTLcVQuhSETIH94oiMREemREmyRQSYjknbkYcq+aGvvoLapjYONrUeW2sZW\naptaqW1so7aplUOdtmsbW9lV2xQk501tNLa293iN9DQjLyud3GiQeOdmppOXGSTledFgnZuZTm40\ncuRYTjRCXma4PzMSrtPJyYiQrhFaBoaOjiDBnnxZoiMREekVJdgi0ivpkbQjfblPRFt7B3XNbRxq\nChLwuqZg+1BzkIAfamqjvrmNuuY26prCdXMbNQ0tbDvQcGRfQ0vPifph0fQ0cqMRcqJB8n14nZ1x\n+HWwnRONkJMZIScjKJMdDY+F5wblImRlBPuzMiJE0tTSHjd710PjAfW/FpGUoQRbROIiPZJ2pG/5\nyejocBpa22loPppwB+s26prbqW8OEvWGlvZwaaO+OVy3BOcdqG+kviUo0xiW6ejj/IKZ6Wlkh4l3\ndjTCDfPG8+E5Y0/qZ5PjONL/Wgm2iKQGJdgiklLS0izoNpKZzrAYvae709zWESTbre00HknK22ls\nbaOxpYPG1vZgaQleN7S20dQS7GtoaWdobt+63Egf5JbCaZcHfbBFRFKAEmwRGfTMjKywC8ib5/GU\nhJt6RbCIiKQIPQEkIiIiIhJDSrBFRERERGJICbaIiIiISAzFNcE2s0vMbL2ZbTSz249x3MzsB+Hx\nf5nZ2fGMT0RERETkZMUtwTazCPBj4FJgKnC1mU3tUuxSYFK43Az8JF7xiYiIiIjEQjxbsGcDG919\nk7u3AA8DC7qUWQD8ygMvAEVmNiKOMYqIiIiInJR4JtijgG2dXm8P9/W1jIiIiIhI0krJhxzN7GYz\nW2FmK6qrqxMdjoiIiIjIEfGcaGYHMKbT69Hhvr6Wwd3vAe4BMLNqM9t6AvGUAHtP4Lxkkcrxp3Ls\noPgTLZXjP1bsg2p+9Zdeemmv6uyUlMrxp3LsoPgTrWv8vaqz45lgLwcmmdl4gqT5KuCaLmUeAz5t\nZg8Dc4CD7l7V3Zu6e+mJBGNmK9x91omcmwxSOf5Ujh0Uf6KlcvypHHusqM5OTakcfyrHDoo/0U40\n/rgl2O7eZmafBv4CRID73H2Nmd0SHl8ILALeBWwEGoDr4xWfiIiIiEgsxLMFG3dfRJBEd963sNO2\nA5+KZ0wiIiIiIrGUkg85xsg9iQ7gJKVy/KkcOyj+REvl+FM59kRL9Xun+BMnlWMHxZ9oJxS/BY3G\nIiIiIiISC4O5BVtEREREJOYGXYJtZpeY2Xoz22hmtyc6nr4ysy1mttrMVprZikTH0xMzu8/M9pjZ\nq532DTGzp8zstXBdnMgYu3Oc+L9mZjvCf4OVZvauRMZ4PGY2xsz+YWYVZrbGzD4T7k+J+99N/Kly\n/7PM7EUzWxXG//Vwf0rc/2Siejt+VGcnjursxIp1nT2ouoiYWQTYAFxEMEvkcuBqd69IaGB9YGZb\ngFnunhJjSprZ24A64FfuPj3c9x1gv7vfFf6xLHb3LyQyzuM5TvxfA+rc/e5ExtYTMxsBjHD3l80s\nH3gJuBK4jhS4/93E/0FS4/4bkOvudWaWAfwT+AzwXlLg/icL1dvxpTo7cVRnJ1as6+zB1oI9G9jo\n7pvcvQV4GFiQ4JgGNHd/DtjfZfcC4Jfh9i8JfgGT0nHiTwnuXuXuL4fbh4C1wChS5P53E39K8EBd\n+DIjXJwUuf9JRPV2HKnOThzV2YkV6zp7sCXYo4BtnV5vJ4X+8UMO/M3MXjKzmxMdzAka3mkCoV3A\n8EQGc4JuNbN/hV9HJuXXdZ2Z2TjgLGAZKXj/u8QPKXL/zSxiZiuBPcBT7p6S9z/BVG8n3kD4zKZE\nnXGY6uzEiGWdPdgS7IFgnrufCVwKfCr8OixlhWOfp1o/pZ8AE4AzgSrgu4kNp3tmlgf8Hvisu9d2\nPpYK9/8Y8afM/Xf39vD3dTQw28ymdzme9PdfYmLA1Nsp+plNmToDVGcnUizr7MGWYO8AxnR6PTrc\nlzLcfUe43gM8SvD1aarZHfbVOtxna0+C4+kTd98d/hJ2AD8jif8Nwn5kvwcecPdHwt0pc/+PFX8q\n3f/D3L0G+AdwCSl0/5OE6u3ES+nPbCrVGaqzk0Ms6uzBlmAvByaZ2XgziwJXAY8lOKZeM7Pc8MEB\nzCwXuBh4tfuzktJjwL+F2/8G/DGBsfTZ4V+00HtI0n+D8IGNnwNr3f17nQ6lxP0/XvwpdP9Lzawo\n3M4meEhvHSly/5OI6u3ES+nPbArVGaqzEyjWdfagGkUEIBwe5v8BEeA+d/9mgkPqNTObQND6AcE0\n9w8me/xm9hAwHygBdgNfBf4A/AYoB7YCH3T3pHwo5Tjxzyf4qsuBLcDHO/XPShpmNg9YDKwGOsLd\nXyToE5f097+b+K8mNe7/GQQPxEQIGjN+4+53mNlQUuD+JxPV2/GjOjtxVGcnVqzr7EGXYIuIiIiI\n9KfB1kVERERERKRfKcEWEREREYkhJdgiIiIiIjGkBFtEREREJIaUYIuIiIiIxJASbJEEMLOvmdnG\nRMchIiI9U50tfaUEW1KWme02s3PC7efM7JpExyQiIsemOlsGEyXYkpLM7BQgF3glnN3tHOD5xEYl\nIiLHojpbBhsl2JKq3gIsc/c2gop6n7tv7ekkM8szs++b2Q4zazCzV8zsvZ2OjzMzN7OPmNnTZtZo\nZpvM7Kou7zPZzB43s7pw+VP4B6RzmZlm9qSZ1YZlXjSzOV3KLDCzdWZWb2bPmNmkk7orIiLJSXW2\nDCpKsCWlmFmNmdUAC4F54fZfgbJOx453rgF/AmYAHwKmAz8BHjazC7sU/w5wH8H0rg8CD5jZWeH7\nZIfXzALOD5c84MmwZQYzmwY8BxwALgjf527e+Ds3AvgE8GHgPCA/vKaIyICgOlsGLXfXoiVlFmBc\nuOwC3htuvwB85vCxbs6dDzQBhV323wf8odP7O3BnlzJLgF+H2zcADUBJp+PDgUbgo+HrXwOrgLTj\nxPI1oA0o7bTvQ0AHkJXo+6xFixYtsVhUZ2sZrEt6d8m3SLJx9y1mdgaQAfwRyCFoabjC3ff0cPo5\nQBTYETSMHBEFXutSdmmX188Dh1tMpgEV7r63U1y7zWx9eAxgJvCku3d0E89Od6/u/BowYBhQ2cPP\nIiKS9FRny2ClBFtShpmtAcYSfG4zgIMEX99lApvCCniqux+voksLzznnGMdaYh5wz7pe08O1um6J\nSMpTnS2DmT4UkkreRdDy8SLwlXD7d8DPw+0zCVoUjmcFUETwdd7GLkvXCv7cLq/PAyrC7TXAVDMr\nOXzQzIYDk4FXw10vAReamX7HRGSwUp0tg5Y+SJIyPHjifDNwBvCou28keOjlz50q3bZu3uLvwN+A\nR8zsSjObED41fquZ3dSl7A1mdo2ZnWpmdwBzge+Fxx4EqoH/NbOzzWwm8DCwA/jfsMx3gEkED9rM\nMrOJZvYBM5t78ndCRCT5qc6WwUwJtqSas4AWd19rZoXA6QRPfvfI3R24AngE+L/AOuBx4DLg9S7F\nbwduBv4FXAt8xN1fDt+nEbgYaA6v/SxQD1zi7i1hmdUED+iUhsdXAv8HaD+RH1pEJEWpzpZByYLP\nr4hAMKYqQYvLW939n4mNRkREuqM6W5KVWrBFRERERGJICbaIiIiISAypi4iIiIiISAypBVtERERE\nJIaUYIuIiIiIxJASbBERERGRGFKCLSIiIiISQ0qwRURERERiSAm2iIiIiEgM/X8p+B+kqkmEpwAA\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f4cb3057898>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xs = np.arange(num_epochs)\n",
    "\n",
    "fig, axes = plt.subplots(1, 2, sharex=True, sharey=False, figsize=(12, 4))\n",
    "ax0, ax1 = axes.ravel()\n",
    "\n",
    "ax0.plot(xs, tr_loss, label='train loss')\n",
    "ax0.plot(xs, dev_loss, label='dev loss')\n",
    "ax0.legend()\n",
    "ax0.set_xlabel('# epoch')\n",
    "ax0.set_ylabel('CE loss')\n",
    "\n",
    "ax1.plot(xs, tr_metric, label='train acc')\n",
    "ax1.plot(xs, dev_metric, label='dev acc')\n",
    "ax1.legend()\n",
    "ax1.set_xlabel('# epoch')\n",
    "ax1.set_ylabel('Accuracy')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# (b) Train with regularization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,"
     ]
    }
   ],
   "source": [
    "num_epochs = 30\n",
    "# tried multiple reg_strength values to pick a relatively good one\n",
    "params_reg, tr_loss, tr_metric, dev_loss, dev_metric = nn_train(\n",
    "    trainData, trainLabels, devData, devLabels, num_epochs=num_epochs, reg_strength=0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "with open('params_with_regularization.pkl', 'wb') as opf:\n",
    "    pickle.dump(params_reg, opf)\n",
    "    \n",
    "# # with open('params_with_regularization.pkl', 'rb') as inf:\n",
    "# #     params_reg = pickle.load(inf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x7f4c8593deb8>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f4cb3057630>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xs = np.arange(num_epochs)\n",
    "\n",
    "fig, axes = plt.subplots(1, 2, sharex=True, sharey=False, figsize=(12, 4))\n",
    "ax0, ax1 = axes.ravel()\n",
    "\n",
    "ax0.plot(xs, tr_loss, label='train loss')\n",
    "ax0.plot(xs, dev_loss, label='dev loss')\n",
    "ax0.legend()\n",
    "ax0.set_xlabel('# epoch')\n",
    "ax0.set_ylabel('CE loss')\n",
    "\n",
    "ax1.plot(xs, tr_metric, label='train acc')\n",
    "ax1.plot(xs, dev_metric, label='dev acc')\n",
    "ax1.legend()\n",
    "ax1.set_xlabel('# epoch')\n",
    "ax1.set_ylabel('Accuracy')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Summary**: without regularization, the overfitting is apparent as there is big difference between the performances on the the training and validation data in terms of both CE loss and accuracy. In contrast, with regularization, the performance on validation data follows that on training data closely, does much better than without regularization. You will see different kinds of spikes by changing the random see when calling `prepare_data`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# (c) Evaluate performance on the test data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test accuracy (without regularization): 0.9312\n",
      "Test accuracy (with regularization): 0.9678\n"
     ]
    }
   ],
   "source": [
    "accuracy = nn_test(testData, testLabels, params)\n",
    "print('Test accuracy (without regularization): {0}'.format(accuracy))\n",
    "\n",
    "accuracy = nn_test(testData, testLabels, params_reg)\n",
    "print('Test accuracy (with regularization): {0}'.format(accuracy))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Backup code\n",
    "\n",
    "Below are left here for future reference, applied gradcheck during development to ensure backprop is implemented correctly"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def gradcheck_naive(f, x):\n",
    "    \"\"\"Gradient check for a function f.\n",
    "\n",
    "    Arguments:\n",
    "    f -- a function that takes a single argument and outputs the\n",
    "         cost and its gradients\n",
    "    x -- the point (numpy array) to check the gradient at\n",
    "\n",
    "    confirmed it's a bit different from eval_numerical_gradient on\n",
    "    http://cs231n.github.io/optimization-1/\n",
    "\n",
    "    \"\"\"\n",
    "\n",
    "    rndstate = random.getstate()\n",
    "    random.setstate(rndstate)\n",
    "    fx, grad = f(x)             # Evaluate function value at original point\n",
    "    h = 1e-4                    # Do not change this!\n",
    "\n",
    "    # Iterate over all indexes in x\n",
    "    it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])\n",
    "    while not it.finished:\n",
    "        ix = it.multi_index\n",
    "        # Try modifying x[ix] with h defined above to compute\n",
    "        # numerical gradients. Make sure you call random.setstate(rndstate)\n",
    "        # before calling f(x) each time. This will make it possible\n",
    "        # to test cost functions with built in randomness later.\n",
    "        old_x = x[ix]\n",
    "        x[ix] = old_x + h       # increment by h\n",
    "        random.setstate(rndstate)\n",
    "        fxph, _ = f(x)             # evalute f(x + h)\n",
    "        x[ix] = old_x - h\n",
    "        random.setstate(rndstate)\n",
    "        fxmh, _ = f(x)             # evaluate f(x - h)\n",
    "        numgrad = (fxph - fxmh) / (2 * h)  # the slope\n",
    "        x[ix] = old_x\n",
    "\n",
    "        reldiff = abs(numgrad - grad[ix]) / max(1, abs(numgrad), abs(grad[ix]))\n",
    "        # print('numerical gradient: {0}; reldiff: {1}'.format(numgrad, reldiff))\n",
    "        if reldiff > 1e-5:\n",
    "            print(\"Gradient check failed.\")\n",
    "            print(\"First gradient error found at index {0}\".format(str(ix)))\n",
    "            print(\"Your gradient: {0} \\t Numerical gradient: {1}\".format(\n",
    "                grad[ix], numgrad))\n",
    "            return\n",
    "        it.iternext()           # Step to next dimension\n",
    "\n",
    "    print(\"Gradient check passed!\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def back_prop_grad_check(data, labels, params, b2):\n",
    "#     params['W2'] = W2\n",
    "#     params['b2'] = b2\n",
    "#     params['W1'] = W1\n",
    "    params['b2'] = b2\n",
    "\n",
    "    W2 = params['W2']\n",
    "\n",
    "    ### YOUR CODE HERE\n",
    "    h, y, cost = forward_prop(data, labels, params)\n",
    "    loss = cost * data.shape[0]\n",
    "    \n",
    "    delta_1 = y - labels\n",
    "    gradW2 = np.dot(h.T, delta_1)   # matrix multiple sums the grad over all samples in the batch\n",
    "    gradb2 = np.sum(delta_1, axis=0, keepdims=True) # need to sum up mannually\n",
    "    \n",
    "    delta_2 = np.multiply(np.dot(delta_1, W2.T), h * (1 - h))\n",
    "    gradW1 = np.dot(data.T, delta_2)\n",
    "#     gradb1 = np.sum(delta_2, axis=0, keepdims=True)\n",
    "\n",
    "    return loss, gradb2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def sanity_check():\n",
    "    \"\"\"\n",
    "    Set up fake data and parameters for the neural network, and test using\n",
    "    gradcheck.\n",
    "    \"\"\"\n",
    "    N = 10\n",
    "    D = 10\n",
    "    H = 5\n",
    "    K = 10\n",
    "    dimensions = [D, H, K]\n",
    "    data = np.random.randn(N, D)   # each row will be a datum\n",
    "    labels = np.zeros((N, K))\n",
    "    for i in range(N):\n",
    "        labels[i, random.randint(0, K - 1)] = 1\n",
    "    \n",
    "    params = {}\n",
    "    W1 = np.random.standard_normal((D, H))\n",
    "    b1 = np.zeros((1, H), dtype=float)\n",
    "    W2 = np.random.standard_normal((H, K))\n",
    "    b2 = np.zeros((1, K), dtype=float)\n",
    "\n",
    "    params['W1'] = W1\n",
    "    params['b1'] = b1\n",
    "    params['W2'] = W2\n",
    "    params['b2'] = b2\n",
    "    \n",
    "    gradcheck_naive(\n",
    "        lambda W1: back_prop_grad_check(data, labels, params, b2), b2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "sanity_check()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
